﻿using Lg.Core.Pay;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Lg.Core.WxHelper.TenPay.V2
{
    public class TenPayParam:IPayParam
    {
        /// <summary>
        /// 公众账号ID,必填,微信支付分配的公众账号ID（企业号corpid即为此appId）(长度32)
        /// </summary>
        public string appid { get; set; }

        /// <summary>
        /// 商户号,必填,微信支付分配的商户号(长度32)
        /// </summary>
        public string mch_id { get; set; }

        /// <summary>
        /// 设备号,不是必填,自定义参数，可以为终端设备号(门店号或收银设备ID)，PC网页或公众号内支付可以传"WEB"(长度32)
        /// </summary>
        public string device_info { get; set; }

        /// <summary>
        /// 随机字符串,必填,随机字符串，长度要求在32位以内。推荐随机数生成算法(长度32)
        /// </summary>
        public string nonce_str { get; set; }

        /// <summary>
        /// 签名,必填,通过签名算法计算得出的签名值(长度128)
        /// </summary>
        public string sign { get; set; }

        /// <summary>
        /// 签名类型,不是必填,签名类型，默认为MD5，支持HMAC-SHA256和MD5。(长度32)
        /// </summary>
        public string sign_type { get; set; }

        /// <summary>
        /// 商品简单描述,必填,(长度128)
        /// </summary>
        public string body { get; set; }

        /// <summary>
        /// 商品详细描述,不是必填，对于使用单品优惠的商户，该字段必须按照规范上传(长度6000)
        /// </summary>
        public string detail { get; set; }

        /// <summary>
        /// 附加数据,不是必填,在查询API和支付通知中原样返回，可作为自定义参数使用(长度127)
        /// </summary>
        public string attach { get; set; }

        /// <summary>
        /// 商户系统内部订单号,必填,要求32个字符内，只能是数字、大小写字母_-|* 且在同一个商户号下唯一。(长度32)
        /// </summary>
        public string out_trade_no { get; set; }

        /// <summary>
        /// 标价币种,不是必填,符合ISO 4217标准的三位字母代码，默认人民币：CNY(长度16)
        /// </summary>
        public string fee_type { get; set; }

        /// <summary>
        /// 订单总金额,必填，单位为分，
        /// </summary>
        public int total_fee { get; set; }

        /// <summary>
        /// 用户的客户端IP ,必填,支持IPV4和IPV6两种格式的IP地址。(长度64)
        /// </summary>
        public string spbill_create_ip { get; set; }

        /// <summary>
        /// 订单生成时间，不是必填,格式为yyyyMMddHHmmss，如2009年12月25日9点10分10秒表示为20091225091010(长度14)
        /// </summary>
        public string time_start { get; set; }

        /// <summary>
        /// 订单失效时间，不是必填,格式为yyyyMMddHHmmss，订单失效时间是针对订单号而言的，由于在请求支付的时候有一个必传参数prepay_id只有两小时的有效期，所以在重入时间超过2小时的时候需要重新请求下单接口获取新的prepay_id。(长度14)
        /// </summary>
        public string time_expire { get; set; }

        /// <summary>
        /// 订单优惠标记，不是必填,使用代金券或立减优惠功能时需要的参数(长度32)
        /// </summary>
        public string goods_tag { get; set; }

        /// <summary>
        /// 异步接收微信支付结果通知的回调地址，必填,通知url必须为外网可访问的url，不能携带参数(长度256)
        /// </summary>
        public string notify_url { get; set; }

        /// <summary>
        /// 交易类型,必填,JSAPI -JSAPI支付,NATIVE -Native支付,APP -APP支付(长度16)
        /// </summary>
        public string trade_type { get; set; }

        /// <summary>
        /// 商品ID,trade_type=NATIVE时，此参数必传。此参数为二维码中包含的商品ID，商户自行定义(长度32)
        /// </summary>
        public string product_id { get; set; }

        /// <summary>
        /// 指定支付方式,不是必填,上传此参数no_credit--可限制用户不能使用信用卡支付(长度32)
        /// </summary>
        public string limit_pay { get; set; }

        /// <summary>
        /// 不是必填,trade_type=JSAPI时（即JSAPI支付），此参数必传，此参数为微信用户在商户对应appid下的唯一标识。openid如何获取，可参考【获取openid】。企业号请使用【企业号OAuth2.0接口】获取企业号内成员userid，再调用【企业号userid转openid接口】进行转换(长度128)
        /// </summary>
        public string openid { get; set; }

        /// <summary>
        ///电子发票入口开放标识, 不是必填,Y，传入Y时，支付成功消息和支付详情页将出现开票入口。需要在微信支付商户平台或微信公众平台开通电子发票功能(长度8)
        /// </summary>
        public string receipt { get; set; }

        /// <summary>
        /// 场景信息,不是必填,该字段常用于线下活动时的场景信息上报，支持上报实际门店信息，商户也可以按需求自己上报相关信息。该字段为JSON对象数据，对象格式为{"store_info":{"id": "门店ID","name": "名称","area_code": "编码","address": "地址" }} (长度256)
        /// </summary>
        public string scene_info { get; set; }
    }

}
